package com.wd.live.module_login

import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.pm.PackageManager
import android.view.View
import android.widget.Toast
import androidx.lifecycle.Observer
import com.alibaba.android.arouter.facade.annotation.Route

import com.alibaba.android.arouter.launcher.ARouter
import com.tencent.mm.opensdk.constants.ConstantsAPI
import com.tencent.mm.opensdk.modelmsg.SendAuth
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.wd.live.login.viewmodel.LoginViewModel
import com.wd.live.module_base.bean.FindLiveListBean
import com.wd.live.module_base.bean.FindWxBean
import com.wd.live.module_base.wxapi.WXUtil
import com.wd.live.module_login.databinding.ActivityWelcomeBinding
import com.wd.module_base.net.HttpUtils
import com.wd.module_base.ui.BaseActivity
import com.wd.module_base.ui.BaseViewModel

/*
* ViewModel 和 LiveData: ViewModel 用于管理界面相关的数据，以确保数据在配置更改
* （如屏幕旋转）时不会丢失。LiveData 是一个可观察的数据持有者，它可以感知生命周期并且
* 在数据变化时通知观察者。数据倒灌是指当观察者重新激活时，LiveData会将最新的数据发送给观察者。
* 约束布局: 约束布局是Android中强大的布局管理器，可以帮助开发者创建灵活和适配性强的界面布局
* 协程和线程对比: 协程是一种轻量级的并发编程解决方案，它可以简化异步编程并提供更好的性能和可读性；
* 而线程是操作系统调度的最小单位，用于执行应用程序中的代码。协程相比线程更轻量且更容易管理
* */
@Route(path = "/module_login/home")
class WelcomeActivity : BaseActivity<LoginViewModel,ActivityWelcomeBinding>() {
    var userId:Int=101
    var labelId:Int=1
    var labelName:Int=10
    // APP_ID 替换为你的应用从官方网站申请到的合法appID
    private val APP_ID = "wx064904aa8809f5aa"

    // IWXAPI 是第三方app和微信通信的openApi接口
    private var api: IWXAPI? = null
    private var wxlist = mutableListOf<List<FindWxBean>>()
    override fun getLayout(): Int {
       return R.layout.activity_welcome
    }

    override fun initData() {
        binding.wxLogin.setOnClickListener(View.OnClickListener {
            if (binding.isCheckId.isChecked){
                Toast.makeText(this,"选中协议",Toast.LENGTH_SHORT).show()
                WXUtil.login()
            }else{
                Toast.makeText(this,"请先选中协议",Toast.LENGTH_SHORT).show()
            }
        })


        //调用微信登录
        regToWx()

        binding.wxLogin.setOnClickListener(object :View.OnClickListener{
            override fun onClick(v: View?) {
                val b=hasWX()
                if (b){
                    Toast.makeText(this@WelcomeActivity,"安装微信了",Toast.LENGTH_SHORT).show()
                    run{
                        //send oauth request
                        val req =SendAuth.Req()
                        req.scope="snsapi_userinfo"//只能填snsapi_userinfo
                        req.state="wechat_sdk_demo_test"
                        api!!.sendReq(req)
                    }
                    ARouter.getInstance().build("/app/main").navigation()
                    finish()
                }else{
                    Toast.makeText(this@WelcomeActivity,"没有安装微信",Toast.LENGTH_SHORT).show()
                }
            }

        })

       /* viewModel.getFindWx(userId, labelId, labelName)
        viewModel.mWXLogin.observe(this ){
            it.result?.let { it1-> wxlist.addAll(it1)}
        }
        wxlist.forEach { findWxBean ->
            InfoUtil.setBasicId(userId =wxlist)
        }*/





        binding.btnAgreement.setOnClickListener(View.OnClickListener {
            ARouter.getInstance().build("/module_login/agreement")
                .navigation()
        })

        binding.loginBtn.setOnClickListener(View.OnClickListener {
            finish()
        })
    }

    private fun regToWx(){
        //通过WXAPIFactory工厂，获取IWXAPI的实例
        api=WXAPIFactory.createWXAPI(this,APP_ID,true)
        //将应用的appID注册到微信
        api?.registerApp(APP_ID)
        //建议动态监听微信启动广播进行注册到微信
        registerReceiver(object :BroadcastReceiver(){
            override fun onReceive(context: Context?, intent: Intent?) {
                //将该app注册到微信
                api?.registerApp(APP_ID)
            }
        }, IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP))
    }

    override fun getViewModelClass(): Class<LoginViewModel> {
      return LoginViewModel::class.java
    }

}
@SuppressLint("UnspecifiedRegisterReceiverFlag")
private fun initWXLoginListener(){

}
//判断是否安装微信的方法
fun hasWX(): Boolean {
    val installedPackages=
    return false
}